package cn.design.realize;

import java.util.HashMap;
import java.util.Map;

/**
 * @author dlq
 * @description  环境角色(Context)：这个角色的任务一般是用来存放文法中各个终结符所对应的具体值，
 *            比如R=R1+R2，我们给R1赋值100，给R2赋值200。这些信息都需要存放到环境角色中，很多情况下我们使用Map来充当环境角色就够了,
 *            我们传入的变量名以及对应变量的值
 * @date 2020/9/29 10:02
 * @since 1.0
 */
public class Context {
    /**
     *   这里使用map 存储  传入的变量名以及对应变量的值
     */
    private final Map<String,Integer> map = new HashMap<>();

    //
    public void putVariable(String key,int value){
        //保证了存放的值是不变的
        if (!map.containsKey(key)){
            map.put(key, value);
        }

    }

    public Integer getVariable(String key) throws Exception {
        if (!map.containsKey(key)){
            throw  new Exception("不存在这个key");
        }
        return map.get(key);
    }


}
